home *** CD-ROM | disk | FTP | other *** search
- Path: sundog.tiac.net!ceylon!news
- From: Brenda <g051286>
- Newsgroups: comp.lang.c
- Subject: Re: What is &Variable (declared as: char Variable[10])?
- Date: 28 Feb 1996 16:01:48 GMT
- Organization: GTE Laboratories Incorporated
- Message-ID: <4h1u9d$sqq@ceylon.gte.com>
- References: <4gqpa1$3h9@alcor.usc.edu> <4gsdno$1bg@umbc9.umbc.edu> <4gtab6$acb@ceylon.gte.com> <313318b8.53776146@nntp.ix.netcom.com>
- NNTP-Posting-Host: 138.83.53.101
- Mime-Version: 1.0
- Content-Type: text/plain; charset=us-ascii
- Content-Transfer-Encoding: 7bit
- X-Mailer: Mozilla 1.1N (X11; I; HP-UX A.09.05 9000/712)
- X-URL: news://132.197.8.2/313318b8.53776146@nntp.ix.netcom.com
-
- miker3@ix.netcom.com (Mike Rubenstein) wrote:
- >Brenda <g051286> wrote:
- >
- >> schlein@umbc.edu (Jonas J. Schlein) wrote:
- >> >Abu Wawda <wawda@alcor.usc.edu> wrote:
- >> >|> I'm having trouble understanding what the address of a static array
- >> >|> is.
- >> >
- >> >I'm having trouble understanding why it matters? You almost never use the
- >> >address of an array directly unless doing something tricky with pointers
- >> >or with particular dimensions of a multiple dimensional array.
- >> >
- >> >|> For example, if I declare a variable called myarray as:
- >> >|> char myarray[10];
- >> >|> then what could &myarray possibly mean? myarray is not a pointer, so
- >> >|> &myarray could not possibly be the address of the variable myarray
- >> >|> (like it would be if I did char* myarray and then asked for &myarray).
- >> >
- >> >Yes it could and yes it is...'myarray' is not a pointer, but &myarray is
- >> >a pointer to 'myarray'.
- >>
- >> Um, that's not correct. myarray is DEFINITELY a pointer! As declared above,
- >> it is a constant pointer to 10 contiguous char datatypes. myarray is an
- >> ADDRESS whereas *(myarray + 5) or myarray[5] is the 6th element in the array.
- >> The difference between an array and something like "char *p=myarray", is that
- >> you can say p++, but you can't say myarray++. You shouldn't say &myarray
- >> either because myarray is a constant, but I read that on some compilers
- >> scanf ignores the dereferencing and does not bother to warn you.
- >
- >NO. NO. NO. Where do people get this idea that arrays are pointers.
- >Arrays are arrays and pointers are pointers. In many, but not all,
- >situations an array is converted to a pointer. There are exceptions.
- >For example sizeof myarray is 10 but sizeof p is almost certainly not
- >10.
- >
- >Why shouldn't you say &myarray. It's perfectly legal C and any
- >compiler that does not accept it is broken. &myarray is a pointer to
- >an array of 10 char.
- >
- >
- >Michael M Rubenstein
-
- What is the definition of a pointer? I have always been taught that a
- pointer is simply an address in memory, and an array name (i.e. myarray)
- is simply a CONSTANT address. I don't think this statement is all that
- radical. Of course there are differences between arrays and pointers
- due to the fact that an array is a CONSTANT address and a pointer is a
- VARIABLE address. And the reason I said you shouldn't (note shouldn't
- not couldn't) say &myarray is:
-
- ==================================================
- (from "A Book On C", Kelley & Pohl, pg 200)
- Constructs not to be pointed at:
- 1. Do not point at constants. (&3)
- 2. Do not point at arrays; an array name is a constant. (int a[77]; &a)
- 3. Do not point at ordinary expressions &(k + 99)
- 4. Do not point at register variables. (register v; &v)
- The address operator can be applied to variables and array elements.
- ===================================================
-
- So again I say, myarray is DEFINITELY a pointer (i.e. address in memory).
-
-